/*
给定一个非负整数数组 A， A 中一半整数是奇数，一半整数是偶数。

对数组进行排序，以便当 A[i] 为奇数时，i 也是奇数；当 A[i] 为偶数时， i 也是偶数。

你可以返回任何满足上述条件的数组作为答案。

 

示例：

输入：[4,2,5,7]
输出：[4,5,2,7]
解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。
 

提示：

2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/sort-array-by-parity-ii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& A) {
        /*
        vector<int> odd;
        vector<int> even;
        for(auto& i:A){
            if(i%2==0){
                odd.push_back(i);
            }else{
                even.push_back(i);
            }
        }
        //sort(odd.begin(),odd.end());
        //sort(even.begin(),even.end());
        for(int j=0;j<odd.size();j++){
            A[2*j]=odd[j];
            A[2*j+1]=even[j];
        }
        return A;
        */

        int ou=0;
        int ji=1;
        while(ou<A.size()||ji<A.size()){
            while(ou<A.size()&&A[ou]%2==0){
                ou=ou+2;
            }
            while(ji<A.size()&&A[ji]%2!=0){
                ji=ji+2;
            }
            if(ou<A.size()&&ji<A.size()){
                swap(A[ou],A[ji]);
            }
        }
        return A;
    }
};